package com.bi.autotest.cases.payprocess;

import com.auto.base.Assertion;
import com.auto.base.InitAppium;
import com.bi.autotest.operations.payprocessoperation.*;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import java.net.MalformedURLException;

/**
 * Created by yidian on 2018/4/23.
 */
public class NewCScanB extends InitAppium {

    private NewMyLoginOperation newMyLoginOperate;
    private NewCScanBOperation newCScanBOperation;
    private MarketOperation marketOperation;
    private VipCardOperation vipCardOperation;

    @BeforeClass
    public void initDriver() {
        try {
            setUp();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        Assert.assertNotNull(driver);
        newMyLoginOperate = new NewMyLoginOperation(driver);
        newCScanBOperation = new NewCScanBOperation(driver);
        vipCardOperation = new VipCardOperation(driver);
        marketOperation = new MarketOperation(driver);
        //直接用缓存登录上去
        login_HasCache();
    }

    public void login_HasCache() {
        boolean isSuccess = newMyLoginOperate.LoginPreNew();
        if (isSuccess) {
            print("直接用缓存登陆的情况 开通了渠道");
        }
    }

    /**
     * 不设置金额的情况,确认支付按钮明暗情况
     */
    @Test(priority = 0)
    public void payZeroColor() {
        //自识别二维码
        newCScanBOperation.longPressQRCodeImg();
        boolean b = newCScanBOperation.btnColor();
        //判读确认支付按钮的颜色
        Assertion.verifyEquals(b, true, "不设置金额，确认支付按钮明暗情况");

    }

    /**
     * 例5
     * 自识别二维码，输入金额0.01,跳转微信支付，支付成功（支付成功状态），关闭成功页面
     */
    @Test(priority = 1)
    public void receiptsWX() {
        newCScanBOperation.longPressQRCodeImg();
        boolean isPayZeroPointZeroOne = newCScanBOperation.receiptsWX();
        Assertion.verifyEquals(isPayZeroPointZeroOne, true, "自识别二维码，输入金额0.01,支付情况");
    }

    /**
     * 例6  账目管理，账目查询，该会员营销，发放立减金10
     * switchH5_C_W(newMyLoginPage.ISCACHE_SUCCESSPAGE);切换操作h5
     */
    @Test(priority = 2)
    public void vipMarketingLJJ() {
        //newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        //newCScanBOperation.sleep(2000);
        //newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        //newCScanBOperation.sleep(2000);
        boolean isVipMarketing_LJJ = newCScanBOperation.vipMarketingLJJ();
        Assertion.verifyEquals(isVipMarketing_LJJ, true, "发放立减金10元情况");
        //我的收藏进入收款码页面
        newMyLoginOperate.intoReceiptCode();
    }

    /**
     * 例7
     * 自识别二维码，输入金额5,使用立减金，0元账单支付成功
     */
    @Test(priority = 3)
    public void receiptsLJJ() {
        newCScanBOperation.longPressQRCodeImg();
        boolean isPayFiveLLJ = newCScanBOperation.receiptsLJJ();
        Assertion.verifyEquals(isPayFiveLLJ, true, "收款（立减金）情况");
    }

    /**
     * 例8
     * 收款（微信+立减金），输入金额5.01,扣除立减金5元使用微信付款0.01，支付成功
     */
    @Test(priority = 4)
    public void receiptsWX_LJJ() {
        //newCScanBOperation.longPressQRCodeImg();//本次分离测试时使用
        boolean isPayFiveLLJ = newCScanBOperation.receiptsWX_LJJ();
        Assertion.verifyEquals(isPayFiveLLJ, true, "收款（微信+立减金）输入金额5.01,扣除立减金5元使用微信付款0.01情况");
    }

    /**
     * 例9
     * 指定会员营销（折扣优惠）最近一笔交易的会员,5折，次数3次，期限不输入
     */
    @Test(priority = 5)
    public void vipMarketingDiscount() {
        //newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        //newCScanBOperation.sleep(2000);
        //newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        //newCScanBOperation.sleep(2000);

        boolean isVipMarketingDiscount = newCScanBOperation.vipMarketingDiscount();
        Assertion.verifyEquals(isVipMarketingDiscount, true, "指定会员营销（折扣）发放5折，次数3次，期限不限折扣情况");
        //我的收藏进入收款码页面
        newMyLoginOperate.intoReceiptCode();
    }

    /**
     * 例10
     * 自识别（折扣）输入金额0.1，使用5.0折，微信支付成功
     */
    @Test(priority = 6)
    public void receiptsDiscount() {
        newCScanBOperation.longPressQRCodeImg();
        boolean isPayFiveLLJ = newCScanBOperation.receiptsDiscount();
        Assertion.verifyEquals(isPayFiveLLJ, true, "输入金额5.01,扣除立减金5元使用微信付款0.01，支付账单情况");
    }

    /**
     * 例11
     * 发放立减金10
     */
    @Test(priority = 7)
    public void giveOutGold() {
        vipMarketingLJJ();
    }

    /**
     * 例12 收款（折扣+立减）
     * 输入金额1.00，使用5.0折0.50，立减金0.50，0元账单支付成功
     */
    @Test(priority = 8)
    public void payDiscountLLJ() {
        newCScanBOperation.longPressQRCodeImg();
        boolean isPayDiscountLLJ = newCScanBOperation.payDiscountLJJ();
        Assertion.verifyEquals(isPayDiscountLLJ, true, "收款（折扣+立减）输入1元,5折,立减支付情况");
    }

    /**
     * 例13 收款（折扣+立减+微信）     注：此操作完成用户余额0
     * 输入金额19.01，使用5.0折9.50，立减金9.50，微信支付0.01元账单支付成功
     */
    @Test(priority = 9)
    public void payDiscountLLJWeiXin() {
        //newCScanBOperation.longPressQRCodeImg();//本次分离测试时使用

        boolean isPayDiscountLLJWeiXin = newCScanBOperation.payDiscountLJJWeiXin();
        Assertion.verifyEquals(isPayDiscountLLJWeiXin, true, "收款（折扣+立减+微信）输入金额19.01,5折、立减、微信支付账单情况");
    }

    /**
     //     * 例14 营销(折扣)     1折，次数2次，期限不输入
     //     */
    @Test(priority = 10)
    public void MarketingDiscount() {
        //点击设备返回按钮
        newCScanBOperation.pressBackKey();
        newCScanBOperation.sleep(2000);
        newCScanBOperation.pressBackKey();
        newCScanBOperation.sleep(2000);
        boolean isVipMarketingDiscount = newCScanBOperation.MarketingDiscount();
        Assertion.verifyEquals(isVipMarketingDiscount, true, "营销(折扣)发放折扣，期限不限折扣情况");
        //我的收藏进入收款码页面
        newMyLoginOperate.intoReceiptCode();
    }

    /**
     * 例15 收款（会员价）添加商品娃哈哈 3元，共一件商品
     *
     * 注：本例运行收款码页面存在金额设置需重新打开收款码页面
     */
    @Test(priority = 11)
    public void receiptsVipPrice() {
        boolean isPayFiveLLJ = newCScanBOperation.receiptsVipPrice();
        Assertion.verifyEquals(isPayFiveLLJ, true, "收款（立减金）情况");
    }

    /**
     * 例16 购买储值卡     100.00元储值卡,微信支付完成
     */
    @Test(priority = 12)
    public void buyStoreValueCard() {
        /*newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        newCScanBOperation.sleep(2000);
        newCScanBOperation.pressBackKey(); //点击设备返回按钮,本次分离测试时使用
        newCScanBOperation.sleep(2000);
        vipCardOperation.LoginAccount();//收藏进入会员卡页面，本次分离测试时使用*/

        boolean isbuyStoreValueCard = vipCardOperation.buyStoreValueCard();
        print("购买储值卡100.00元储值卡,微信支付是否成功：" + isbuyStoreValueCard);
        Assertion.verifyEquals(isbuyStoreValueCard, true, "购买储值卡100.00元储值卡,微信支付情况");
        newMyLoginOperate.intoReceiptCode();//收藏进入收款码
    }

    /**
     * 例17 收款（储储值卡+折扣）  原100元储值卡
     * 1折2次
     * 输入金额500.00，账单支付成功，余额50
     */
    @Test(priority = 13)
    public void payStoreValueCard() {
        newCScanBOperation.longPressQRCodeImg();
        boolean isPayDiscountLLJ = newCScanBOperation.payStoreValueCard("500");
        Assertion.verifyEquals(isPayDiscountLLJ, true, "收款（储储值卡+折扣）支付情况");
    }


    /**
     * 例18 收款（储值卡+折扣+微信）  原50元储值卡
     * 1折1次
     * 输入金500.00，账单支付成功，余额0
     */
    @Test(priority = 14)
    public void payStoreValueCard_WX() {
        //newCScanBOperation.longPressQRCodeImg();//本次分离测试时使用

        boolean isPayDiscountLLJ = newCScanBOperation.payStoreValueCard_WX("500.1");
        Assertion.verifyEquals(isPayDiscountLLJ, true, "收款（储值卡+折扣+微信）支付情况");
    }

}
